package cn.com.cifi.mars.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import cn.com.cifi.mars.bean.dto.DictionaryTypeDto;
import cn.com.cifi.mars.bean.vo.sys.rsp.DictionaryTypeVo;
import cn.com.cifi.mars.constant.Constants;
import cn.com.cifi.mars.entity.common.DictionaryType;
import cn.com.cifi.mars.mapper.mars.DictionaryTypeMapper;
import cn.com.cifi.mars.service.DictionaryTypeService;

@Service
public class DictionaryTypeServiceImpl extends ServiceImpl<DictionaryTypeMapper, DictionaryType>  implements DictionaryTypeService {

	@Autowired
	private DictionaryTypeMapper dictionaryTypeMapper;

	/**
	 * 分页查询字典类型列表
	 */
	@Override
	public DictionaryTypeVo queryDictionaryTypeList(String typeName,String current,String pageSize) {
		DictionaryTypeVo vo=new DictionaryTypeVo();
    	Page<DictionaryTypeDto>pageDto=new Page<DictionaryTypeDto>();
		//参数当前页
		pageDto.setCurrent(Integer.parseInt(current));
		//参数每页数量
		pageDto.setSize(Integer.parseInt(pageSize));
		if(typeName.equals(Constants.PLEASE_CHOOSE)) {
			typeName="";
		}
		List<Map<String,Object>>list=dictionaryTypeMapper.selectPageList(pageDto,typeName);
		List<DictionaryTypeDto>dtoList=new ArrayList<DictionaryTypeDto>();
		list.forEach(x->{
			 DictionaryTypeDto dto=new DictionaryTypeDto();
			 String id=(String) x.get("id");
		     String typeName1=(String) x.get("typeName");
		     String typeCode=(String) x.get("typeCode");
		     String typeDesc=(String) x.get("typeDesc");
		     String createTimeStr=(String) x.get("createTimeStr");
		     String updateTimeStr=(String) x.get("updateTimeStr"); 
		     dto.setId(id);
		     dto.setCreateTimeStr(createTimeStr);
		     dto.setTypeCode(typeCode);
		     dto.setTypeDesc(typeDesc);
		     dto.setTypeName(typeName1);
		     dto.setUpdateTimeStr(updateTimeStr);
		     dtoList.add(dto);
		});
		vo.setCurrent(pageDto.getCurrent());
		vo.setPages(pageDto.getPages());
		vo.setPageSize(pageDto.getSize());
		vo.setTotal(pageDto.getTotal());
		vo.setList(dtoList);
		return vo;
	}

	/**
	 * 根据类型编码查询是否存在
	 * false 存在 true 不存在
	 */
	@Override
	public boolean queryTypeCode(String typeCode) {
		DictionaryType type=dictionaryTypeMapper.selectByTypeCode(typeCode);
		if(type!=null) {
			return false;
		}
		return true;
	}

	/**
	 * 字典类型下拉框
	 */
	@Override
	public List<Map<String, Object>>  queryDictionaryTypeSelect() {
		QueryWrapper<DictionaryType> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("type_code", "type_name");
        List<Map<String, Object>> list = dictionaryTypeMapper.selectMaps(queryWrapper);
        return list;
	}

}
